package servers;

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import factory.JPAFactory;

import valueobjects.ProdutoVO;

public class ProdutoRMIServer 
	extends UnicastRemoteObject 
		implements ProdutoRMI {
	
	public ProdutoRMIServer()
		throws RemoteException {
		super();
	}

	@Override
	public ArrayList<ProdutoVO> obtemListaProdutos(String codigoPeriferico,
			String codigoFabricante) throws RemoteException {
		
		EntityManager manager =
			JPAFactory.getInstance()
				.getJPAFactory()
					.createEntityManager();
		
		String sql = "select object(o) " +
			"from ProdutoVO as o " +
				"where o.codigoFabricante =:cF " +
					"and o.codigoPeriferico =:cP";
		
		Query q = manager.createQuery(sql);
		q.setParameter("cF", codigoFabricante);
		q.setParameter("cP", codigoPeriferico);
		
		ArrayList<ProdutoVO> retorno = (ArrayList<ProdutoVO>)
			q.getResultList();
		
		manager.close();
		
		return retorno;
	}
	
	public static void main(String[] args) {
		try {
			
			ProdutoRMIServer server =
				new ProdutoRMIServer();
			
			Naming.rebind("ProdutoRemoto", server);
			
		} catch(Exception e) {
			e.printStackTrace();
		}
	}

}